import os
import shutil
from datetime import datetime
import logging

from config.config_manager import OUTPUT_DIR


def reorganize_files():
    """
    将原有的 OUTPUT_DIR/message_id 文件重新分配到 OUTPUT_DIR/current_date/message_id 格式的新文件夹中
    """
    try:
        # 获取当前日期
        current_date = datetime.now().strftime("%Y-%m-%d")

        # 获取 OUTPUT_DIR 下的所有直接子目录
        subdirectories = [d for d in os.listdir(OUTPUT_DIR) if os.path.isdir(os.path.join(OUTPUT_DIR, d))]

        for subdir in subdirectories:
            # 检查是否是日期格式的目录（假设日期格式为 YYYY-MM-DD）
            if subdir.count('-') == 2 and all(part.isdigit() for part in subdir.split('-')):
                logging.info(f"跳过已按日期组织的目录：{subdir}")
                continue

            # 构造旧的文件夹路径
            old_dir = os.path.join(OUTPUT_DIR, subdir)

            # 构造新的文件夹路径
            new_dir = os.path.join(OUTPUT_DIR, current_date, subdir)
            os.makedirs(new_dir, exist_ok=True)  # 确保新文件夹存在

            # 遍历旧文件夹中的所有文件
            for file_name in os.listdir(old_dir):
                old_file_path = os.path.join(old_dir, file_name)
                new_file_path = os.path.join(new_dir, file_name)

                # 移动文件
                shutil.move(old_file_path, new_file_path)
                logging.info(f"文件 {old_file_path} 已移动到 {new_file_path}")

            # 可选：删除旧的 MessageId 文件夹（如果不再需要）
            os.rmdir(old_dir)
            logging.info(f"旧文件夹 {old_dir} 已清空")

        logging.info("文件重新分配完成")
    except Exception as e:
        logging.error(f"重新分配文件时出错: {e}")


if __name__ == "__main__":
    logging.basicConfig(level=logging.INFO, format="%(asctime)s - %(levelname)s - %(message)s")
    reorganize_files()